package com.yunke.entity.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.util.List;

/**
 * 社群动态VO
 * 
 * @author yunke
 * @since 1.0.0
 */
@Data
@Schema(name = "YunkeCommunityPostVo", description = "社群动态VO")
public class YunkeCommunityPostVo {

    @Schema(description = "动态ID")
    private Long id;

    @Schema(description = "社群ID")
    private Long communityId;

    @Schema(description = "社群名称")
    private String communityName;

    @Schema(description = "发布者ID")
    private Long publisherId;

    @Schema(description = "发布者昵称")
    private String publisherName;

    @Schema(description = "发布者头像")
    private String publisherAvatar;

    @Schema(description = "发布者角色（1群主 2管理员 3普通成员）")
    private Integer publisherRole;

    @Schema(description = "发布者等级")
    private Integer publisherLevel;

    @Schema(description = "动态类型（1文字 2图片 3视频 4链接 5投票 6活动）")
    private Integer postType;

    @Schema(description = "动态类型描述")
    private String postTypeText;

    @Schema(description = "动态标题")
    private String title;

    @Schema(description = "动态内容")
    private String content;

    @Schema(description = "图片列表")
    private List<String> imageList;

    @Schema(description = "视频URL")
    private String videoUrl;

    @Schema(description = "视频封面")
    private String videoCover;

    @Schema(description = "链接URL")
    private String linkUrl;

    @Schema(description = "链接标题")
    private String linkTitle;

    @Schema(description = "链接描述")
    private String linkDesc;

    @Schema(description = "链接图片")
    private String linkImage;

    @Schema(description = "话题标签列表")
    private List<String> topicList;

    @Schema(description = "@用户列表")
    private List<YunkeUserSimpleVo> mentionUserList;

    @Schema(description = "位置信息")
    private String location;

    @Schema(description = "是否置顶")
    private Boolean isTop;

    @Schema(description = "是否精华")
    private Boolean isEssence;

    @Schema(description = "点赞数")
    private Integer likeCount;

    @Schema(description = "评论数")
    private Integer commentCount;

    @Schema(description = "分享数")
    private Integer shareCount;

    @Schema(description = "浏览数")
    private Integer viewCount;

    @Schema(description = "收藏数")
    private Integer collectCount;

    @Schema(description = "热度值")
    private Integer hotScore;

    @Schema(description = "动态状态（0正常 1隐藏 2删除）")
    private Integer postStatus;

    @Schema(description = "动态状态描述")
    private String postStatusText;

    @Schema(description = "审核状态（0待审核 1审核通过 2审核拒绝）")
    private Integer auditStatus;

    @Schema(description = "审核状态描述")
    private String auditStatusText;

    @Schema(description = "当前用户是否已点赞")
    private Boolean isLiked;

    @Schema(description = "当前用户是否已收藏")
    private Boolean isCollected;

    @Schema(description = "距离发布时间描述")
    private String timeDesc;

    @Schema(description = "评论列表（最新3条）")
    private List<YunkeCommentVo> recentComments;

    @Schema(description = "备注")
    private String remark;

    @Schema(description = "创建时间")
    private Long createTime;

    @Schema(description = "更新时间")
    private Long updateTime;

    /**
     * 用户简化信息VO
     */
    @Data
    @Schema(name = "YunkeUserSimpleVo", description = "用户简化信息VO")
    public static class YunkeUserSimpleVo {
        @Schema(description = "用户ID")
        private Long userId;

        @Schema(description = "用户昵称")
        private String nickname;

        @Schema(description = "用户头像")
        private String avatar;
    }
} 